/**
 * 视频类型模型
 * 对应数据库中的video_type表
 */
const { Model } = require('sequelize');

module.exports = (sequelize, DataTypes) => {
  class VideoType extends Model {
    /**
     * 定义模型关联关系
     */
    static associate(models) {
      // 一对多关联到Video模型
      VideoType.hasMany(models.Video, {
        foreignKey: 'video_type_id',
        as: 'videos'
      });
    }
  }
  
  VideoType.init({
    // 使用type_id作为主键，保持与数据库一致
    type_id: {
      type: DataTypes.INTEGER,
      autoIncrement: true,
      primaryKey: true,
      field: 'type_id'
    },
    // 视频类型名称
    name: {
      type: DataTypes.STRING(50),
      allowNull: false,
      unique: true,
      comment: '视频类型名称'
    },
    // 类型描述
    description: {
      type: DataTypes.STRING(255),
      allowNull: true,
      comment: '类型描述'
    },
    // 创建时间
    created_at: {
      type: DataTypes.DATE,
      defaultValue: DataTypes.NOW,
      field: 'created_at'
    },
    // 更新时间
    updated_at: {
      type: DataTypes.DATE,
      defaultValue: DataTypes.NOW,
      onUpdate: DataTypes.NOW,
      field: 'updated_at'
    }
  }, {
    sequelize,
    modelName: 'VideoType',
    tableName: 'video_type',
    timestamps: true,
    createdAt: 'created_at',
    updatedAt: 'updated_at',
    comment: '视频类型表'
  });
  
  return VideoType;
};